<?php
/**
 * aprobar_os actions.
 *
 * @package    SAC_CLonsa
 * @subpackage aprobar_os
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class aprobar_osActions extends sfActions
{
  
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
      $this->forward('aprobar_os', 'entrantes');
  }

  public function executeEntrantes()
  {
      $ordenes_pendientes = OsSolicitantePeer::getOsPor2EstadosOsId(2, 6);
      $this->ordenes_pendientes = $ordenes_pendientes; 

      $cont = 0;
      foreach ($ordenes_pendientes as $orden)
      {
          $nombreCompleto = sfGuardUserProfilePeer::getUnNomApePorUserId($orden->getSfGuardUserId());
          $htOrdenSolicitante[$orden->getId()]= $nombreCompleto;
          $cont++;
      }

      if ( $cont > 0 ){
          $this->htOrdenSolicitante = $htOrdenSolicitante;
      }
      else{
          $this->htOrdenSolicitante = null;
      }
      
  }

  public function executeAprobar(sfWebRequest $peticion)
  {
     $this->EstadoOs = '';
     $this->cont = 1;//este contador se usa en la vista, aprobarSuccess.php, para diferenciar los id de cada elemento de la tabla
     $cont2 = 1;
     $this->bandera = 1;
     $this->jefes_adquisicion = sfGuardUserProfilePeer::getJefesAdquisicion();

     if( $peticion->getParameter('id') != NULL )
     {
         $OrdenServicio = OsSolicitantePeer::getOsPorId($peticion->getParameter('id'));
         $this->OrdenServicio = $OrdenServicio;
         $this->Items = ItemOsPeer::getItemsPorOsId( $peticion->getParameter('id') ); 
         
         if( $peticion->isMethod( 'post' ) && $peticion->getParameter( 'encargado_a_procesar_elegido' ) )
         {
             $num_items = $peticion->getParameter( 'num_item_tabla_aprobar' );
             //jefe_adquisiciones
             $id_perfil_encargado_elegido  = $peticion->getParameter( 'encargado_a_procesar_elegido' );
             $IdPermiso = sfGuardPermissionPeer::getIdPermisoPorIdPerfilUsuario( $id_perfil_encargado_elegido );
             $this->IdPermiso = $IdPermiso;             
             
             //$this->num_items = $num_items;
             $bandera = false;
             while ( $cont2 < ($num_items) )
             {
                if( $peticion->getParameter( 'radio_aprobar' . $cont2 ) == 'aprobada' )
                {
                    //cambia a estado aprobado
                    ItemOsPeer::CambiarEstadoSolicitud($peticion->getParameter( 'id_item' . $cont2 ), 4);
                    $bandera = true;
                }
                elseif( $peticion->getParameter( 'radio_aprobar' . $cont2 ) == 'desaprobada' )
                {
                    //cambia a estado desaprobada
                    ItemOsPeer::CambiarEstadoSolicitud($peticion->getParameter( 'id_item' . $cont2 ), 5);
                }

                $cont2++;
             }
             if( $bandera )
             {
                 /* código para ingresar usario que aprueba la Orden de Servicio */
                 $OrdenServicio->setEncargadoDeProcesarId( $IdPermiso );
                 $OrdenServicio->setAprobadoPorUsuarioId( $this->getUser()->getGuardUser()->getId() );
             }
             $OrdenServicio->save();
             $this->EstadoOs = OsSolicitantePeer::actualizarEstadoOs($peticion->getParameter('id'));
             $this->redirect('aprobar_os/entrantes');
         }
     }
     else
     {
         $this->bandera = 0;
     }
  }
}